; void borrar_arbol (nodo_arbol_t* a)

%include "macros.mac"
extern free

global borrar_arbol

%define  ptr_arbol  [ebp+8]
%define  izq_offset  13
%define  der_offset  17

; REFERENCIAS
; ebx --> ptr a arbol
; esi --> ptr a subarbol
%macro borrar_sub_arbol 1
	mov esi, [ebx + %1]
	push esi
	call borrar_arbol
	add esp, 4
%endmacro


section .text

borrar_arbol:
	convencion_C 0

	;Si el puntero es NULL, termina
	mov ebx, dword ptr_arbol
	cmp ebx, 0
	je .fin

	;Borro subarbol izquierdo
	borrar_sub_arbol izq_offset

	;Borro subarbol derecho
	borrar_sub_arbol der_offset
	
	;Libero nodo padre
	push ebx
	call free
	add esp, 4

.fin:	convencion_C_fin 0
	ret


